想像一下:你家需要換燈泡。正常人怎麼做?
把電源關掉 → 換燈泡 → 再打開 → 一片漆黑到亮光中間會有個「斷電的瞬間」。
但如果你有兩組燈泡,新的燈已經先裝好,等到時機一到只要「啪!」地切換開關,就能瞬間亮起來,完全不影響生活。
在軟體世界裡,這種「不中斷切換」的方法,就叫做 藍綠部署 (Blue-Green Deployment)。
它的核心目標就是:
讓新版本能安全上線,同時保留舊版本作為保命符,一鍵切換、能上能退。
一般初學者的部署方式,通常長這樣:
這種「短暫停機」在 side project 沒差,但如果你是在跑一個 API、電商網站、甚至是支付系統,那一秒 downtime 可能就是幾十個用戶流失,甚至造成交易失敗。
問題在於:
這就像換燈泡時,全屋瞬間陷入黑暗,還可能踩到樂高積木。
藍綠部署的思路很簡單:
這樣做有幾個好處:
這就是「換燈泡不中斷」的秘密。
今天我們不講 Kubernetes(因為對初學者太重),而是用 Docker Compose + Caddy 來模擬藍綠部署。
myapp.com {
reverse_proxy blue:8000
}
如果要切換:
myapp.com {
reverse_proxy green:8000
}
在 Green 環境啟動時,先用 /healthz 確認服務狀態。只有「200 OK」時,Caddy 才會改指向 Green。
效果:
使用者只會看到服務一直可用,完全感受不到背後你在換燈泡。
藍綠部署只是「不中斷上線」的一種方法,還有其他策略:
這些都是為了平衡「速度」與「風險」。
大公司可能會混合使用(例如先 Canary → 再 Blue-Green → 最後 Rolling)。
而對初學者來說,理解 Blue-Green 已經能大大提升部署思維。
藍綠部署的精神,就是:
生活裡換燈泡不中斷,軟體裡版本上線不中斷。
這就是 DevSecOps 裡「交付信任」的最佳實踐之一。
所以下次你在佈署專案時,不妨問自己一句:
「我這是在換燈泡,還是在把整棟房子先拉掉電源?」